home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / VObjectText.h < prev    next >
C/C++ Source or Header  |  1992-08-26  |  3KB  |  110 lines

  1. #ifndef VObjectText_First
  2. #ifdef __GNUG__
  3. //pragma once
  4. #pragma interface
  5. #endif
  6. #define VObjectText_First
  7.  
  8. #include "StyledText.h"
  9. #include "Mark.h"
  10.  
  11. const cMarkChar  = '#'; // character to mark a VisualMark
  12.  
  13. //------ VObjectMark -----------------------------------------------------------
  14.  
  15. class VObjectMark: public VisualMark {
  16.     class VObject *vop;
  17. public:
  18.     MetaDef(VObjectMark);
  19.     
  20.     VObjectMark(VObject *vo= 0);
  21.     ~VObjectMark();
  22.  
  23.     VObject *GetVObject();
  24.  
  25.     void CalcExtent();
  26.     Point GetExtent();
  27.     int Base();
  28.     void SetContainer(class VObject*);
  29.     void Draw(Point at, Rectangle clip, Rectangle line, bool border);
  30.     void SendDown(int, int, void *);
  31.     bool WantsInput(Point p);
  32.     virtual class Command *Input(Point lp, Token &t, class Clipper *cl);
  33.  
  34.     void FreeAll();
  35.     OStream& PrintOn(OStream&);
  36.     IStream& ReadFrom(IStream&);
  37.     void CollectParts(Collection *col);
  38. };
  39.  
  40. //------ VObjectText -----------------------------------------------------------
  41.  
  42. class MarkList;
  43. class TextView;
  44.  
  45. class VObjectText: public StyledText {                                                           
  46.     MarkList *visualMarks;
  47.     TextView *tv;
  48.  
  49.     void Init();
  50. protected:
  51.     void ReplaceRange(int from, int to, Text *src, int sfrom, int sto);    
  52. public:
  53.     MetaDef(VObjectText);
  54.     
  55.     VObjectText();
  56.     VObjectText(int size, Font *fd= gSysFont, TxtParaAlign= eTxtParaLeft);
  57.     VObjectText(byte *buf, int len= -1, Font *fd= gSysFont, TxtParaAlign= eTxtParaLeft);
  58.     ~VObjectText();
  59.     void InitNew();
  60.  
  61.     //---editing
  62.     void SetCharStyle(TxtCharProp m, int f, int t, const CharStyleSpec &st);
  63.     void ReplaceCharStyles(RunArray *styles, int from, int to);
  64.  
  65.     //---- VObject embedding
  66.     VisualMark *GetVisualMarkAt(int at);
  67.     byte GetMarkChar();
  68.     void PasteVisualMark(VisualMark *vmp, int from, int to);
  69.     void PasteVObject(VObject *vop, int from, int to);
  70.     //VObject *ContainsPoint(Point p);
  71.     VObject *VObjectAt(int charNo);
  72.     MarkList *GetVisualMarks();
  73.     int FindPositionOfVObject(VObject *);   // -1 VObject not found
  74.     TextView *GetTextView();
  75.     void SetView(class TextView*);
  76.  
  77.     bool IsMarkChar(int charNo);   
  78.     bool IsVisualMark(int charNo);
  79.     
  80.     void VObjectChangedSize(VObject *);
  81.     Iterator *VisualMarksIterator();
  82.     int VisualMarksCount();
  83.     
  84.     //---- activation/passivation
  85.     OStream& PrintOn(OStream&);
  86.     IStream& ReadFrom(IStream&);
  87.     
  88.     void CollectParts(Collection *c);
  89.     void ClassInvariant();
  90. };
  91.  
  92. inline bool VObjectText::IsMarkChar(int charNo)
  93.     return (*this)[charNo] == cMarkChar; 
  94. }
  95.  
  96. inline bool VObjectText::IsVisualMark(int charNo)
  97.     return (IsMarkChar(charNo) && GetVisualMarkAt(charNo)); 
  98. }
  99.  
  100. //---- VObjectMark --------------------------------------------------
  101.  
  102. inline VObject* VObjectMark::GetVObject()
  103.     return vop; 
  104. }
  105.     
  106. #endif
  107.